Generally, applications are developed to be installed on a single computing platform, such as an operating system on a server. The applications may be designed to execute on specific computing architectures where computing resources (e.g., processors and memory) may be shared with other applications installed on a server. As a result, application developers may build and assemble applications in anticipation of deploying the applications across a number of different hardware environments that may include public, private, and virtualized servers. Due to the difficulty associated with anticipating interactions with services used by various applications on a server, conflicts may arise within a service that results in poor performance or non-performance of the application.
Software containers may be used to mitigate issues associated with developing and deploying applications across various hardware environments. For example, an application and dependencies utilized by an application may be packed into a software container. The software container may be portable and may enable placement of a software container on servers having different hardware and/or software environments. Thus, a software container may be moved from a private server having one computing architecture to a public server having another computing architecture with minimal impact or even no impact on the application.